Skip to main content

Puntero: SUPER

El SUPER puntero es una variable especial que se utiliza para la programación orientada a objetos.

SUPER es el puntero de un bloque de funciones a la instancia de bloque de funciones base a partir de la cual se generó el bloque de funciones. El SUPER puntero también permite el acceso a la implementación de los métodos del bloque de función base (clase base). A SUPER El puntero está disponible automáticamente para cada bloque de función. Puedes usar SUPER solo en métodos y en las implementaciones de bloques de funciones asociadas.

Desreferenciación del puntero: SUPER^

Utilizando el SUPER puntero: con el SUPER palabra clave, llama a un método que es válido en la instancia de la clase básica o clase principal.

ejemplo 98. Ejemplo

S T

SUPER^.METH_DoIt();

FBD/CFC/LD

_cds_img_pointer_super_fbd.png


ejemplo 99. Ejemplo

Uso de SUPER y THIS punteros

FUNCTION_BLOCK FB_Base
VAR_OUTPUT
        iCnt : INT;
END_VAR

METHOD METH_DoIt : BOOL
iCnt := -1;

METHOD METH_DoAlso : BOOL
METH_DoAlso := TRUE;

FUNCTION_BLOCK FB_1 EXTENDS FB_Base
VAR_OUTPUT
        iBase : INT;
END_VAR

THIS^.METH_DoIt();  //Call of the methods of FB_1
THIS^.METH_DoAlso();

SUPER^.METH_DoIt();   //Call of the methods of FB_Base
SUPER^.METH_DoAlso();
iBase := SUPER^.iCnt;

METHOD METH_DoIt : BOOL
iCnt := 1111;
METH_DoIt := TRUE;

PROGRAM PLC_PRG
VAR
    myBase : FB_Base;
    myFB_1 : FB_1;
    iTHIS : INT;
    iBase : INT;
END_VAR
myBase();
iBase := myBase.iCnt;
myFB_1();
iTHIS := myFB_1.iCnt;


Sugerencia

THIS aún no está implementado para la lista de instrucciones (IL).